Open Programming Language Interpreters
نویسندگان
چکیده
Context: This paper presents the concept of open programming language interpreters, a model to support them and a prototype implementation in the Neverlang framework for modular development of programming languages. Inquiry: We address the problem of dynamic interpreter adaptation to tailor the interpreter’s behaviour on the task to be solved and to introduce new features to fulfil unforeseen requirements. Many languages provide a meta-object protocol (MOP) that to some degree supports reflection. However, MOPs are typically language-specific, their reflective functionality is often restricted, and the adaptation and application logic are often mixed which hardens the understanding and maintenance of the source code. Our system overcomes these limitations. Approach: We designed a model and implemented a prototype system to support open programming language interpreters. The implementation is integrated in the Neverlang framework which now exposes the structure, behaviour and the runtime state of any Neverlang-based interpreter with the ability to modify it. Knowledge:Our system provides a complete control over interpreter’s structure, behaviour and its runtime state. The approach is applicable to every Neverlang-based interpreter. Adaptation code can potentially be reused across different language implementations. Grounding: Having a prototype implementation we focused on feasibility evaluation. The paper shows that our approach well addresses problems commonly found in the research literature. We have a demonstrative video and examples that illustrate our approach on dynamic software adaptation, aspect-oriented programming, debugging and context-aware interpreters. Importance: Our paper presents the first reflective approach targeting a general framework for language development. Our system provides full reflective support for free to any Neverlang-based interpreter. Rather than substituting other approaches, we believe our system can be used as a complementary technique in situations where other approaches present serious limitations.
منابع مشابه
Occurrences in Debugger Speciications
We describe formal manipulations of programming language semantics that permit execution animation for interpreters. We rst study the use of occurrences in the-calculus and we describe an implementation of the notion of residuals. We then describe applications in the development of interpreters for the lazy-calculus and the parallel language Oc-cam.
متن کاملA Rewrite Framework for Language Definitions and for Generation of Efficient Interpreters
A rewrite logic semantic definitional framework for programming languages is introduced, called K, together with partially automated translations of K language definitions into rewriting logic and into C. The framework is exemplified by defining SILF, a simple imperative language with functions. The translation of K definitions into rewriting logic enables the use of the various analysis tools ...
متن کاملControl Structures of Rule-Based Agent Languages
An important issue when deening a rule-based agent programming language is the design of interpreters for these programming languages. Since these languages are all based on some notion of rule, an interpreter must provide some means of selection from a set of such rules. We provide a concrete and intuitive ordering on rules on which this selection can be based. This ordering is inspired by the...
متن کاملACIDE: An Integrated Development Environment Configurable for LATEX
This article introduces the configurable integrated development environment ACIDE, which is an ongoing development project currently in alpha status. It is cross-platform, open-source, and free, and will be distributed under GPL. Although targeted to any programming language environment, including compilers, interpreters, and database systems, in particular it is well-suited to tasks required f...
متن کاملProvable Correctness of Prototype Interpreters in LDL
LDL is a system supporting the design of procedural programming languages and generating prototype interpreters directly from the language definition. A language definition is based on GSFs a kind of attribute grammars and the denotational semantics approach. It is shown how denotational semantics can be transformed into Prolog. It is also shown how the correctness of the prototype interpreters...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید
ثبت ناماگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید
ورودعنوان ژورنال:
- Programming Journal
دوره 1 شماره
صفحات -
تاریخ انتشار 2017